import {RouteView, SideLayout} from "../layouts/index";

export const generator = (routerMap:any, parent?:any) => {
    // 固定模板必须
    const constantRouterComponents = { SideLayout, RouteView }
    return routerMap.map((item:any)=> {
        const { status, icon, name } = item
        const currentRouter = {
            // 如果路由设置了 path，则作为默认 path，否则 路由地址 动态拼接生成如 /dashboard/workplace
            path: item.path || `${parent && parent.path || ''}/${item.key}`,
            // 路由名称，建议唯一
            name: item.key || item.name || '',
            // 该路由对应页面的 组件 :方案1
            // component: constantRouterComponents[item.component || item.key],
            // 该路由对应页面的 组件 :方案2 (动态加载)
            component: (constantRouterComponents[item.component || item.key]) || (() => import(`../views/pages${item.component}.vue`)),
            // meta: 页面标题, 菜单图标, 页面权限(供指令权限用，可去掉)
            meta: {
                title: name,
                icon: icon || undefined,
                keepAlive: true
            },
            hidden:false,
            hideChildrenInMenu:false,
            redirect:'',
            children:[]
        }
        // 是否设置了隐藏菜单
        // if (status === 1) {
        //     currentRouter.hidden = true
        // }
        // // 是否设置了隐藏子菜单
        // if (status === 1) {
        //     currentRouter.hideChildrenInMenu = true
        // }
        // 为了防止出现后端返回结果不规范，处理有可能出现拼接出两个 反斜杠
        if (!currentRouter.path.startsWith('http')) {
            currentRouter.path = currentRouter.path.replace('//', '/')
        }
        // 重定向
        item.redirect && (currentRouter.redirect = item.redirect)
        // 是否有子菜单，并递归处理
        if (item.children && item.children.length > 0) {
            // Recursion
            currentRouter.children = generator(item.children, currentRouter)
        } else {
            // if (settings.layout === 'sidemenu' && item.redirect && item.component === 'BasicLayout') {
            //     currentRouter.children = [{
            //         // 如果路由设置了 path，则作为默认 path，否则 路由地址 动态拼接生成如 /dashboard/workplace
            //         path: item.redirect,
            //         // 路由名称，建议唯一
            //         name: item.key || item.name || '',
            //         // 该路由对应页面的 组件 :方案1
            //         // component: constantRouterComponents[item.component || item.key],
            //         // 该路由对应页面的 组件 :方案2 (动态加载)
            //         component: () => import(`@/views${item.redirect}`),
            //         // meta: 页面标题, 菜单图标, 页面权限(供指令权限用，可去掉)
            //         meta: {
            //             title: name,
            //             icon: icon || undefined,
            //             keepAlive: true
            //         },
            //         hidden: true
            //     }]
            // }
        }
        return currentRouter
    })
}
